home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 42 / Amiga Format AFCD42 (Issue 126, Aug 1999).iso / -serious- / archivers / xfd / developer / include / asm / libraries / xfdmaster.i
Text File  |  1999-05-17  |  18KB  |  421 lines

  1.     IFND    LIBRARIES_XFDMASTER_I
  2. LIBRARIES_XFDMASTER_I    SET    1
  3.  
  4. **
  5. **    $VER: xfdmaster.i 39.1 (24.01.1999)
  6. **
  7. **    Copyright © 1994-99 by Georg Hörmann, Dirk Stöcker
  8. **    All Rights Reserved
  9. **
  10.  
  11.     IFND EXEC_LIBRARIES_I
  12.     include "exec/libraries.i"
  13.     ENDC
  14.  
  15. ;======================================================================
  16. ; Library Base
  17. ;======================================================================
  18.  
  19.     STRUCTURE    xfdMasterBase,LIB_SIZE
  20.     ULONG    xfdm_SegList        ; PRIVATE
  21.     APTR    xfdm_DosBase        ; may be used for I/O etc.
  22.     APTR    xfdm_FirstSlave        ; list of available slaves
  23.     APTR    xfdm_FirstForeMan    ; PRIVATE
  24.     ULONG    xfdm_MinBufferSize    ; (V36) min. bufsize for xfdRecogBuffer()
  25.     ULONG    xfdm_MinLinkerSize    ; (V36) min. bufsize for xfdRecogLinker()
  26.     APTR    xfdm_ExecBase        ; (V38.2) cached for fast access
  27.     LABEL    xfdMasterBase_SIZE
  28.  
  29. XFDM_VERSION    EQU    39    ;for OpenLibrary()
  30.  
  31. XFDM_NAME    MACRO
  32.         dc.b    "xfdmaster.library",0
  33.         ENDM
  34.  
  35. ;======================================================================
  36. ; Object Types (V36)
  37. ;======================================================================
  38.  
  39. XFDOBJ_BUFFERINFO    EQU    1    ; xfdBufferInfo structure
  40. XFDOBJ_SEGMENTINFO    EQU    2    ; xfdSegmentInfo structure
  41. XFDOBJ_LINKERINFO    EQU    3    ; xfdLinkerInfo structure
  42. XFDOBJ_SCANNODE        EQU    4    ; (V37) xfdScanNode structure
  43. XFDOBJ_SCANHOOK        EQU    5    ; (V37) xfdScanHook structure
  44. XFDOBJ_MAX        EQU    5    ; PRIVATE
  45.  
  46. ;======================================================================
  47. ; Buffer Info
  48. ;======================================================================
  49.  
  50.     STRUCTURE    xfdBufferInfo,0
  51.     APTR    xfdbi_SourceBuffer    ; pointer to source buffer
  52.     ULONG    xfdbi_SourceBufLen    ; length of source buffer
  53.     APTR    xfdbi_Slave        ; PRIVATE
  54.     APTR    xfdbi_PackerName    ; name of recognized packer
  55.     UWORD    xfdbi_PackerFlags    ; flags for recognized packer
  56.     LABEL    xfdbi_MaxSpecialLen    ; max. length of special info (eg. password)
  57.     UWORD    xfdbi_Error        ; error return code
  58.     APTR    xfdbi_TargetBuffer    ; pointer to target buffer
  59.     ULONG    xfdbi_TargetBufMemType    ; memtype of target buffer
  60.     ULONG    xfdbi_TargetBufLen    ; full length of buffer
  61.     ULONG    xfdbi_TargetBufSaveLen    ; used length of buffer
  62.     ULONG    xfdbi_DecrAddress    ; address to load decrunched file
  63.     ULONG    xfdbi_JmpAddress    ; address to jump in file
  64.     APTR    xfdbi_Special        ; special decrunch info (eg. password)
  65.     UWORD    xfdbi_Flags        ; (V37) flags to influence recog/decr
  66.     UWORD    xfdbi_Reserved0        ; (V38) PRIVATE
  67.     ULONG    xfdbi_MinTargetLen    ; (V38) required length of target buffer
  68.     ULONG    xfdbi_FinalTargetLen    ; (V38) final length of decrunched file
  69.     APTR    xfdbi_UserTargetBuf    ; (V38) target buffer allocated by user
  70.     ULONG    xfdbi_UserTargetBufLen    ; (V38) target buffer length
  71.     ULONG    xfdbi_MinSourceLen    ; (V39) minimum source length (tested
  72.                     ; by master library)
  73.     LABEL    xfdBufferInfo_SIZE
  74.  
  75. ;======================================================================
  76. ; Segment Info
  77. ;======================================================================
  78.  
  79.     STRUCTURE    xfdSegmentInfo,0
  80.     ULONG    xfdsi_SegList        ; value received by LoadSeg()
  81.     APTR    xfdsi_Slave        ; PRIVATE
  82.     APTR    xfdsi_PackerName    ; name of recognized packer
  83.     UWORD    xfdsi_PackerFlags    ; flags for recognized packer
  84.     LABEL    xfdsi_MaxSpecialLen    ; max. length of special info (eg. password)
  85.     UWORD    xfdsi_Error        ; error return code
  86.     APTR    xfdsi_Special        ; special decrunch info (eg. password)
  87.     UWORD    xfdsi_RelMode        ; (V34) relocation mode
  88.     UWORD    xfdsi_Flags        ; (V37) flags to influence recog/decr
  89.     LABEL    xfdSegmentInfo_SIZE
  90.  
  91. ;======================================================================
  92. ; Linker Info (V36)
  93. ;======================================================================
  94.  
  95.     STRUCTURE    xfdLinkerInfo,0
  96.     APTR    xfdli_Buffer        ; pointer to buffer
  97.     ULONG    xfdli_BufLen        ; length of buffer
  98.     APTR    xfdli_LinkerName    ; name of recognized linker
  99.     FPTR    xfdli_Unlink        ; PRIVATE
  100.     UWORD    xfdli_Reserved        ; set to NULL
  101.     UWORD    xfdli_Error        ; error return code
  102.     ULONG    xfdli_Hunk1        ; PRIVATE
  103.     ULONG    xfdli_Hunk2        ; PRIVATE
  104.     ULONG    xfdli_Amount1        ; PRIVATE
  105.     ULONG    xfdli_Amount2        ; PRIVATE
  106.     APTR    xfdli_Save1        ; pointer to first unlinked file
  107.     APTR    xfdli_Save2        ; pointer to second unlinked file
  108.     ULONG    xfdli_SaveLen1        ; length of first unlinked file
  109.     ULONG    xfdli_SaveLen2        ; length of second unlinked file
  110.     LABEL    xfdLinkerInfo_SIZE
  111.  
  112. ;======================================================================
  113. ; Scan Node (V37)
  114. ;======================================================================
  115.  
  116.     STRUCTURE    xfdScanNode,0
  117.     APTR    xfdsn_Next        ; pointer to next xfdScanNode structure (or NULL)
  118.     APTR    xfdsn_Save        ; pointer to data
  119.     ULONG    xfdsn_SaveLen        ; length of data
  120.     APTR    xfdsn_PackerName    ; name of recognized packer
  121.     UWORD    xfdsn_PackerFlags    ; flags for recognized packer
  122.     LABEL    xfdScanNode_SIZE
  123.  
  124. ;======================================================================
  125. ; Scan Hook (V37)
  126. ;======================================================================
  127.  
  128.     STRUCTURE    xfdScanHook,0
  129.     APTR    xfdsh_Entry        ; entrypoint of hook code
  130.     APTR    xfdsh_Data        ; private data of hook
  131.     ULONG    xfdsh_ToDo        ; bytes still to scan (READ ONLY)
  132.     ULONG    xfdsh_ScanNode        ; found data right now (or NULL) (READ ONLY)
  133.     LABEL    xfdScanHook_SIZE
  134.  
  135. ;======================================================================
  136. ; Error Codes
  137. ;======================================================================
  138.  
  139. XFDERR_OK        EQU    $0000    ; no error
  140.  
  141. XFDERR_NOMEMORY        EQU    $0001    ; error allocating memory
  142. XFDERR_NOSLAVE        EQU    $0002    ; no slave entry in info structure
  143. XFDERR_NOTSUPPORTED    EQU    $0003    ; slave doesn't support called function
  144. XFDERR_UNKNOWN        EQU    $0004    ; unknown file
  145. XFDERR_NOSOURCE        EQU    $0005    ; no sourcebuffer/seglist specified
  146. XFDERR_WRONGPASSWORD    EQU    $0006    ; wrong password for decrunching
  147. XFDERR_BADHUNK        EQU    $0007    ; bad hunk structure
  148. XFDERR_CORRUPTEDDATA    EQU    $0008    ; crunched data is corrupted
  149. XFDERR_MISSINGRESOURCE    EQU    $0009    ; (V34) missing external resource (eg. libs)
  150. XFDERR_WRONGKEY        EQU    $000a    ; (V35) wrong 16/32 bit key
  151. XFDERR_BETTERCPU    EQU    $000b    ; (V37) better CPU required
  152. XFDERR_HOOKBREAK    EQU    $000c    ; (V37) hook caused break
  153. XFDERR_DOSERROR        EQU    $000d    ; (V37) dos error
  154. XFDERR_NOTARGET        EQU    $000e    ; (V38) no user target given
  155. XFDERR_TARGETTOOSMALL    EQU    $000f    ; (V38) user target is too small
  156. XFDERR_TARGETNOTSUPPORTED EQU    $0010    ; (V38) user target not supported
  157.  
  158. XFDERR_UNDEFINEDHUNK    EQU    $1000    ; (V34) undefined hunk type
  159. XFDERR_NOHUNKHEADER    EQU    $1001    ; (V34) file is not executable
  160. XFDERR_BADEXTTYPE    EQU    $1002    ; (V34) bad hunk_ext type
  161. XFDERR_BUFFERTRUNCATED    EQU    $1003    ; (V34) unexpected end of file
  162. XFDERR_WRONGHUNKAMOUNT    EQU    $1004    ; (V34) wrong amount of hunks
  163. XFDERR_NOOVERLAYS    EQU    $1005    ; (V36) overlays not allowed
  164.  
  165. XFDERR_UNSUPPORTEDHUNK    EQU    $2000    ; (V34) hunk type not supported
  166. XFDERR_BADRELMODE    EQU    $2001    ; (V34) unknown XFDREL_#? mode
  167.  
  168. ;======================================================================
  169. ; Relocation modes (V34)
  170. ;======================================================================
  171.  
  172. XFDREL_DEFAULT        EQU    $0000    ; use memory types given by hunk_header
  173. XFDREL_FORCECHIP    EQU    $0001    ; force all hunks to chip ram
  174. XFDREL_FORCEFAST    EQU    $0002    ; force all hunks to fast ram
  175.  
  176. ;======================================================================
  177. ; Values for xfd??_PackerFlags
  178. ;======================================================================
  179.  
  180.     BITDEF    XFDPF,RELOC,0        ; relocatible file packer
  181.     BITDEF    XFDPF,ADDR,1        ; absolute address file packer
  182.     BITDEF    XFDPF,DATA,2        ; data file packer
  183.  
  184.     BITDEF    XFDPF,PASSWORD,4    ; packer requires password
  185.     BITDEF    XFDPF,RELMODE,5        ; (V34) decruncher supports xfdsi_RelMode
  186.     BITDEF    XFDPF,KEY16,6        ; (V35) packer requires 16 bit key
  187.     BITDEF    XFDPF,KEY32,7        ; (V35) packer requires 32 bit key
  188.  
  189.     BITDEF    XFDPF,RECOGLEN,8    ; (V38) slave recognizes target lengths
  190.     BITDEF    XFDPF,USERTARGET,9    ; (V38) slave supports user target buffer
  191.  
  192.     BITDEF    XFDPF,EXTERN,15        ; (V37) PRIVATE
  193.  
  194. ;======================================================================
  195. ; Values for xfd??_Flags (V37)
  196. ;======================================================================
  197.  
  198.     BITDEF    XFDF,RECOGEXTERN,0    ; xfdRecog#?() uses external slaves
  199.     BITDEF    XFDF,RECOGTARGETLEN,1    ; (V38) xfdRecogBuffer() uses only slaves
  200.                     ; that recognize target lengths
  201.     BITDEF    XFDF,RECO